Many of the tasks that are addressed by decision-making systems and artificial intelligence can be framed as constraint satisfaction problems (CSPs). In this framework, the task is specified in terms of a set of variables, each of which can assume values in a given domain, and a set of predicates, or constraints, that the variables must simultaneously satisfy. The set of variables and constraints is referred to as a constraint network. Each constraint may be expressed as a relation, defined over some subset of the variables, denoting valid combinations of their values. A solution to the problem (referred to hereinbelow as a “concrete solution”) is an assignment of a value to each variable from its domain that satisfies all of the constraints.
Constraint satisfaction methods have been found useful in a variety of applications, including:                Artificial intelligence        Robotic control        Temporal reasoning        Natural language parsing        Spatial reasoning        Test-case generation for software and hardware systems        Machine vision        Medical diagnosis        Resource allocation        Crew scheduling        Time tabling        Frequency allocation        Graph coloring.        
For example, Bin et al. describe a constraint satisfaction method for use in automated generation of test programs, in a paper entitled “Using a Constraint Satisfaction Formulation and Solution Techniques for Random Test Program Generation,” IBM Systems Journal 41:3 (2002), pages 386-402, which is incorporated herein by reference. The authors show how random test program generation can be modeled as a CSP, and they describe a set of solution techniques that are used in practical test-case generation tools.
A number of constraint satisfaction systems are described in the patent literature. For example, U.S. Pat. No. 5,636,328, whose disclosure is incorporated herein by reference, describes methods and apparatus for finding values that satisfy a set of constraints, applied particularly to control of a robotic arm. U.S. Pat. No. 5,617,510, whose disclosure is also incorporated herein by reference, describes a method, useful in computer-aided design, of identifying possible solutions to an over-constrained system having a collection of entities and constraints.
One drawback of modeling based on constraint satisfaction is that general solution methods have worst-case exponential time performance. In response to this difficulty, Weigel et al. have proposed a method based on “compiling” partial solutions to a CSP, in “Compiling Constraint Satisfaction Problems,” Artificial Intelligence 115:2 (1999), pages 257-287. General tasks are defined by incomplete CSPs, from which instances are generated by adding more constraints. For any such general task, compilation of the unchanging parts of the CSP builds a structure which represents all its solutions in a condensed manner. When instances are derived from the general task by adding constraints, their solution spaces are always subsets of those of the general task. Thus, the solutions can be found by searching in this reduced search space while applying the additional constraints.